package cn.com.huzo.repository.tech;

import cn.com.huzo.model.entities.tech.ProductBomLinesEntity;
import huzofw.repository.GenericRepository;
import java.util.List;

/**
 * EBOM数据明细访问对象接口。
 *
 * @author 吴旭
 */
public interface ProductBomLinesRepository extends GenericRepository<ProductBomLinesEntity, String> {

    /**
     * 根据EBOM标识取得EBOM明细。
     *
     * @param headerId EBOM标识
     * @return EBOM计划明细
     */
    List<ProductBomLinesEntity> fetchByHeaderId(Long headerId);

    /**
     * 通过料号更改当前EBOM明细的材料。
     *
     * @param linesId EBOM表明细标识
     * @param materialId 要更改的料ID
     * @return 影响行数
     */
    Integer updateLinesByMaterialId(String linesId, Long materialId);

    /**
     * 批量清空EBOM用量。
     *
     * @param itemsList 所选EBOM
     * @return 影响行数
     */
    Integer batchClearLinesProductBom(List<ProductBomLinesEntity> itemsList);

    /**
     * 根据所选款号，引入EBOM明细。
     *
     * @param headerId 当前EBOMID
     * @param importedBomHeaderId 要引入的EBOMID
     * @param createdBy 作成者
     * @param updatedBy 更新者
     * @return 影响行数
     */
    Integer importLinesFromOtherBom(Long headerId, Long importedBomHeaderId, Long createdBy, Long updatedBy);

    /**
     * 从剪切板粘贴数据
     *
     * @param headerId 当前EBOMID
     * @param copiedLinesId 要粘贴的EBOM明细ID
     * @param materialId 材料ID
     * @param uomId 单位ID
     * @param specification 规格
     * @param orderNo 要粘贴的EBOM明细行号
     * @param createdBy 作成者
     * @param updatedBy 更新者
     * @return 影响行数
     */
    Integer insertFromClipboard(Long headerId, String copiedLinesId, Long materialId,
            Long uomId, String specification, Integer orderNo, Long createdBy, Long updatedBy);

    /**
     * 将引入的EBOM明细ID字段清空
     *
     * @param headerId EBOMID
     * @return 影响的行数
     */
    Integer clearImportedBomLinesId(Long headerId);

    /**
     * 重新设置EBOM表标识明细的顺序号
     *
     * @param headerId EBOM表标识
     * @return
     */
    Integer resetLinesOrder(Long headerId);

    /**
     * 更新EBOM明细排列顺序。
     *
     * @param itemsList 所选EBOM
     * @return 影响行数
     */
    Integer updateLinesOrder(List<ProductBomLinesEntity> itemsList);
}
